import User from "../models/User";

// 获取所有用户
export const getUsers = async (page = 1, limit = 10) => {
  const offset = (page - 1) * limit;
  return User.findAndCountAll({
    limit,
    offset,
    order: [["createdAt", "DESC"]],
  });
};

// 根据ID获取用户
export const getUserById = async (id: number) => {
  return User.findByPk(id);
};

// 创建用户
export const createUser = async (userData: {
  username: string;
  email: string;
  password: string;
  name?: string;
  authority?: number;
}) => {
  return User.create(userData);
};

// 更新用户
export const updateUser = async (
  id: number,
  userData: Partial<{ username: string; email: string }>
) => {
  const [updated] = await User.update(userData, {
    where: { id },
  });
  return updated > 0;
};

// 删除用户
/**
 * 删除指定ID的用户
 * @param id - 要删除的用户ID
 * @returns 返回删除操作的结果
 */
export const deleteUser = async (id: number) => {
  return User.destroy({ // 使用User模型的destroy方法删除用户
    where: { id }, // 设置删除条件，根据用户ID进行删除
  });
};

// 根据用户名和密码验证用户
export const validateUser = async (username: string, password: string) => {
  return User.findOne({
    where: { 
      username,
      password // 注意：实际项目中应该使用加密密码
    },
  });
};

// 检查邮箱是否已存在
export const checkEmailExists = async (email: string) => {
  const user = await User.findOne({
    where: { email },
  });
  return !!user; // 返回布尔值，true表示邮箱已存在
};

// 检查用户名是否已存在
export const checkUsernameExists = async (username: string) => {
  const user = await User.findOne({
    where: { username },
  });
  return !!user; // 返回布尔值，true表示用户名已存在
};
